package job;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import notifiers.MailUtils;

import org.apache.commons.lang.StringUtils;
import org.joda.time.DateTime;

import models.DeviceHealth;
import models.SystemParams;
import play.jobs.Every;
import play.jobs.Job;
import play.jobs.On;
import services.DeviceHealthService;
import services.HraDetailService;
import services.SystemParamService;
import utils.BizConstants;
import vos.SjbbVo;

/**
 * 检查今日设备体检数据是否超过上限
 * 
 * @ClassName: CheckDayMaxData 
 * @author: wangsm
 * @date: 2016年5月23日 上午10:26:40
 */
@On("0 30 23 * * ? * ")
public class CheckDayMaxData extends Job {
	private static final SimpleDateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd");
	/**

	 * 检查今日上传是否超过上限，超过的发邮件

	 */
	@Override
	public void doJob()throws Exception{
		String param=SystemParamService.getByCacheId(BizConstants.DAY_MAX_CHECK_DATA);
		if(StringUtils.isEmpty(param)){
			return;
		}
		String emailparam=SystemParamService.getByCacheId(BizConstants.DAYCHECK_EMAIL);
		if(StringUtils.isEmpty(emailparam)){
			return;
		}
		Date date=new Date();
		String today=dateFormater.format(date);
		List<SjbbVo> lists=new ArrayList<SjbbVo>();
		List<SjbbVo> overs=new ArrayList<SjbbVo>();
		lists=HraDetailService.getTodayCount(today);
		if(lists==null||lists.size()<=0){
			return;
		}
		List<DeviceHealth> healths=new ArrayList<DeviceHealth>();
		for(SjbbVo sv : lists){
			if(sv.count>Integer.parseInt(param)){
				overs.add(sv);
				DeviceHealth health=new DeviceHealth(sv.deviceid,new Date(),"设备上传数据超过最大限额"+Integer.parseInt(param)+"条",1);
				healths.add(health);
			}
			else{
				continue;
			}
		}
		if(overs.size()>0){
			//保存不健康记录
			DeviceHealthService.save(healths);
			//发送邮件
			MailUtils.sendTodayEmail(overs,param);
		}
	}
}
